package com.example.smartpark.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.example.smartpark.dto.VehicleAddDTO;
import com.example.smartpark.dto.VehicleUpdateDTO;
import com.example.smartpark.model.Vehicle;
import com.example.smartpark.vo.VehicleVO;

import java.util.List;

/**
 * 车辆服务接口
 */
public interface VehicleService extends IService<Vehicle> {

    /**
     * 获取用户车辆列表
     *
     * @param userId 用户ID
     * @return 车辆列表
     */
    List<VehicleVO> getUserVehicles(Integer userId);

    /**
     * 获取用户的车辆ID列表
     *
     * @param userId 用户ID
     * @return 车辆ID列表
     */
    List<Integer> getUserVehicleIds(Integer userId);

    /**
     * 添加车辆
     *
     * @param userId 用户ID
     * @param vehicleAddDTO 添加车辆DTO
     * @return 添加的车辆信息
     */
    VehicleVO addVehicle(Integer userId, VehicleAddDTO vehicleAddDTO);

    /**
     * 更新车辆信息
     *
     * @param userId 用户ID
     * @param vehicleId 车辆ID
     * @param vehicleUpdateDTO 更新车辆DTO
     * @return 更新后的车辆信息
     */
    VehicleVO updateVehicle(Integer userId, Integer vehicleId, VehicleUpdateDTO vehicleUpdateDTO);

    /**
     * 删除车辆
     *
     * @param userId 用户ID
     * @param vehicleId 车辆ID
     * @return 是否删除成功
     */
    boolean deleteVehicle(Integer userId, Integer vehicleId);

    /**
     * 检查车牌号是否已存在
     *
     * @param plateNumber 车牌号
     * @param excludeVehicleId 排除的车辆ID（用于更新时）
     * @return 是否存在
     */
    boolean checkPlateNumberExists(String plateNumber, Integer excludeVehicleId);
} 